// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLCommentHint;
// import com.alibaba.druid.sql.ast.SQLHint;
// import com.alibaba.druid.sql.ast.statement.SQLErrorLoggingClause;
// import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
// import com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../../../../ast/statement/SQLInsertStatement.h"
#include "OracleStatement.h"

class OracleInsertStatement : virtual public SQLInsertStatement, virtual public OracleStatement
{
public:
  OracleReturningClause_ptr returning;
  SQLErrorLoggingClause_ptr errorLogging;
  SQLHint_list_ptr hints;

  OracleInsertStatement();

  SHAREDOBJECT(OracleInsertStatement);
  void cloneTo(OracleInsertStatement_ptr x);

  SQLHint_list_ptr getHints();

  void setHints(SQLHint_list_ptr hints);

  OracleReturningClause_ptr getReturning();

  void setReturning(OracleReturningClause_ptr returning);

  SQLErrorLoggingClause_ptr getErrorLogging();

  void setErrorLogging(SQLErrorLoggingClause_ptr errorLogging);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void accept0(OracleASTVisitor_ptr visitor);

  SQLObject_ptr clone();

  // @Override
  SQLCommentHint_list_ptr getHeadHintsDirect();
};
